ν΄μ ν μ΄λΈμμ λ€μν μΆ©λ ν΄κ²° μ λ΅μ μ΄ν΄νκ³ κ΅¬ννλ λ° λν ν¬κ΄μ μΈ κ°μ΄λ. ν¨μ¨μ μΈ λ°μ΄ν° μ μ₯ λ° κ²μμ νμμ μ λλ€.
ν΄μ ν μ΄λΈ: μΆ©λ ν΄κ²° μ λ΅ λ§μ€ν°νκΈ°
ν΄μ ν μ΄λΈμ μ»΄ν¨ν° κ³Όνμμ κΈ°λ³Έμ μΈ λ°μ΄ν° ꡬ쑰μ΄λ©°, λ°μ΄ν°λ₯Ό μ μ₯νκ³ κ²μνλ λ° ν¨μ¨μ±μ΄ λ°μ΄λ λ리 μ¬μ©λ©λλ€. νκ· μ μΌλ‘ μ½μ , μμ λ° κ²μ μμ μ λν΄ O(1)μ μκ° λ³΅μ‘λλ₯Ό μ 곡νλ―λ‘ λ§€μ° κ°λ ₯ν©λλ€. κ·Έλ¬λ ν΄μ ν μ΄λΈ μ±λ₯μ ν΅μ¬μ μΆ©λμ μ²λ¦¬νλ λ°©μμ μμ΅λλ€. μ΄ κΈ°μ¬μμλ μΆ©λ ν΄κ²° μ λ΅μ λν ν¬κ΄μ μΈ κ°μλ₯Ό μ 곡νμ¬ λ©μ»€λμ¦, μ₯μ , λ¨μ λ° μ€μ κ³ λ € μ¬νμ μ΄ν΄λ΄ λλ€.
ν΄μ ν μ΄λΈμ΄λ 무μμ λκΉ?
ν΅μ¬μ μΌλ‘ ν΄μ ν μ΄λΈμ ν€λ₯Ό κ°μ λ§€ννλ μ°κ΄ λ°°μ΄μ λλ€. μ΄ λ§€νμ ν€λ₯Ό μ λ ₯μΌλ‘ λ°μ λ°°μ΄(ν μ΄λΈμ΄λΌκ³ ν¨)μ λν μΈλ±μ€(λλ "ν΄μ")λ₯Ό μμ±νλ ν΄μ ν¨μλ₯Ό μ¬μ©νμ¬ μνν©λλ€. κ·Έλ° λ€μ ν΄λΉ ν€μ μ°κ²°λ κ°μ΄ ν΄λΉ μΈλ±μ€μ μ μ₯λ©λλ€. κ° μ± μ κ³ μ ν μ²κ΅¬ λ²νΈκ° μλ λμκ΄μ μμν΄ λ³΄μΈμ. ν΄μ ν¨μλ μ± μ λͺ©(ν€)μ ν΄λΉ μ± κ½μ΄ μμΉ(μΈλ±μ€)λ‘ λ³ννλ μ¬μ μμ€ν κ³Ό κ°μ΅λλ€.
μΆ©λ λ¬Έμ
μ΄μμ μΌλ‘λ κ° ν€κ° κ³ μ ν μΈλ±μ€μ λ§€νλ©λλ€. κ·Έλ¬λ μ€μ λ‘λ μλ‘ λ€λ₯Έ ν€κ° λμΌν ν΄μ κ°μ μμ±νλ κ²μ΄ μΌλ°μ μ λλ€. μ΄κ²μ μΆ©λμ΄λΌκ³ ν©λλ€. κ°λ₯ν ν€μ μκ° ν΄μ ν μ΄λΈμ ν¬κΈ°λ³΄λ€ ν¨μ¬ ν¬κΈ° λλ¬Έμ μΆ©λμ λΆκ°νΌν©λλ€. μ΄λ¬ν μΆ©λμ΄ ν΄κ²°λλ λ°©μμ ν΄μ ν μ΄λΈμ μ±λ₯μ ν° μν₯μ λ―ΈμΉ©λλ€. μλ‘ λ€λ₯Έ λ μ± μ΄ λμΌν μ²κ΅¬ λ²νΈλ₯Ό κ°λ κ²½μ°λ₯Ό μκ°ν΄ 보μΈμ. μ¬μλ λμΌν μμΉμ λ°°μΉνμ§ μλλ‘ μ λ΅μ΄ νμν©λλ€.
μΆ©λ ν΄κ²° μ λ΅
μΆ©λμ μ²λ¦¬νκΈ° μν μ¬λ¬ κ°μ§ μ λ΅μ΄ μμ΅λλ€. μ΄λ ν¬κ² λ κ°μ§ μ£Όμ μ κ·Ό λ°©μμΌλ‘ λΆλ₯ν μ μμ΅λλ€.
- λΆλ¦¬ μ°κ²°λ²(κ°λ°© ν΄μ±μ΄λΌκ³ λ ν¨)
- κ°λ°© μ£Όμλ²(νμ ν΄μ±μ΄λΌκ³ λ ν¨)
1. λΆλ¦¬ μ°κ²°λ²
λΆλ¦¬ μ°κ²°λ²μ ν΄μ ν μ΄λΈμ κ° μΈλ±μ€κ° λμΌν μΈλ±μ€λ‘ ν΄μλλ ν€-κ° μμ μ°κ²° 리μ€νΈ(λλ κ· ν νΈλ¦¬μ κ°μ λ€λ₯Έ λμ λ°μ΄ν° ꡬ쑰)λ₯Ό κ°λ¦¬ν€λ μΆ©λ ν΄κ²° κΈ°μ μ λλ€. κ°μ ν μ΄λΈμ μ§μ μ μ₯νλ λμ λμΌν ν΄μλ₯Ό 곡μ νλ κ° λͺ©λ‘μ λν ν¬μΈν°λ₯Ό μ μ₯ν©λλ€.
μλ λ°©μ:
- ν΄μ±: ν€-κ° μμ μ½μ ν λ ν΄μ ν¨μλ μΈλ±μ€λ₯Ό κ³μ°ν©λλ€.
- μΆ©λ νμΈ: μΈλ±μ€κ° μ΄λ―Έ μ¬μ© μ€μΈ κ²½μ°(μΆ©λ) ν΄λΉ μΈλ±μ€μ μ°κ²° 리μ€νΈμ μ ν€-κ° μμ΄ μΆκ°λ©λλ€.
- κ²μ: κ°μ κ²μνλ €λ©΄ ν΄μ ν¨μλ μΈλ±μ€λ₯Ό κ³μ°νκ³ ν΄λΉ μΈλ±μ€μ μ°κ²° 리μ€νΈμμ ν€λ₯Ό κ²μν©λλ€.
μ:
ν¬κΈ°κ° 10μΈ ν΄μ ν μ΄λΈμ μμν΄ λ³΄μΈμ. ν€ "μ¬κ³Ό", "λ°λλ" λ° "체리"κ° λͺ¨λ μΈλ±μ€ 3μΌλ‘ ν΄μλλ€κ³ κ°μ ν©λλ€. λΆλ¦¬ μ°κ²°λ²μ μ¬μ©νλ©΄ μΈλ±μ€ 3μ μ΄λ¬ν μΈ κ°μ ν€-κ° μμ ν¬ν¨νλ μ°κ²° 리μ€νΈλ₯Ό κ°λ¦¬ν΅λλ€. κ·Έλ° λ€μ "λ°λλ"μ μ°κ²°λ κ°μ μ°ΎμΌλ €λ©΄ "λ°λλ"λ₯Ό 3μΌλ‘ ν΄μνκ³ μΈλ±μ€ 3μμ μ°κ²° 리μ€νΈλ₯Ό μννμ¬ μ°κ²°λ κ°κ³Ό ν¨κ» "λ°λλ"λ₯Ό μ°Ύμ΅λλ€.
μ₯μ :
- κ°λ¨ν ꡬν: μ΄ν΄νκ³ κ΅¬ννκΈ°κ° λΉκ΅μ μ½μ΅λλ€.
- μ μ§μ μΈ μ±λ₯ μ ν: μ±λ₯μ μΆ©λ μμ λ°λΌ μ νμ μΌλ‘ μ νλ©λλ€. μΌλΆ κ°λ°© μ£Όμλ² λ°©μμ μν₯μ λ―ΈμΉλ ν΄λ¬μ€ν°λ§ λ¬Έμ κ° λ°μνμ§ μμ΅λλ€.
- λμ λ‘λ ν©ν° μ²λ¦¬: λ‘λ ν©ν°κ° 1λ³΄λ€ ν°(μ¬μ© κ°λ₯ν μ¬λ‘―λ³΄λ€ λ λ§μ μμ) ν΄μ ν μ΄λΈμ μ²λ¦¬ν μ μμ΅λλ€.
- κ°λ¨ν μμ : ν€-κ° μμ μ κ±°νλ €λ©΄ μ°κ²° 리μ€νΈμμ ν΄λΉ λ Έλλ₯Ό μ κ±°νκΈ°λ§ νλ©΄ λ©λλ€.
λ¨μ :
- μΆκ° λ©λͺ¨λ¦¬ μ€λ²ν€λ: μΆ©λνλ μμλ₯Ό μ μ₯νκΈ° μν΄ μ°κ²° 리μ€νΈ(λλ κΈ°ν λ°μ΄ν° ꡬ쑰)μ λν μΆκ° λ©λͺ¨λ¦¬κ° νμν©λλ€.
- κ²μ μκ°: μ΅μ μ κ²½μ°(λͺ¨λ ν€κ° λμΌν μΈλ±μ€λ‘ ν΄μλ¨) κ²μ μκ°μ O(n)μΌλ‘ μ νλ©λλ€. μ¬κΈ°μ nμ μ°κ²° 리μ€νΈμ μμ μμ λλ€.
- μΊμ μ±λ₯: μ°κ²° 리μ€νΈλ λΉμ°μ λ©λͺ¨λ¦¬ ν λΉμΌλ‘ μΈν΄ μΊμ μ±λ₯μ΄ μ νλ μ μμ΅λλ€. λ°°μ΄ λλ νΈλ¦¬μ κ°μ μΊμ μΉνμ μΈ λ°μ΄ν° ꡬ쑰λ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
λΆλ¦¬ μ°κ²°λ² κ°μ :
- κ· ν νΈλ¦¬: μ°κ²° 리μ€νΈ λμ κ· ν νΈλ¦¬(μ: AVL νΈλ¦¬, μ ν νΈλ¦¬)λ₯Ό μ¬μ©νμ¬ μΆ©λνλ μμλ₯Ό μ μ₯ν©λλ€. μ΄λ κ² νλ©΄ μ΅μ μ κ²μ μκ°μ΄ O(log n)μΌλ‘ μ€μ΄λλλ€.
- λμ λ°°μ΄ λͺ©λ‘: λμ λ°°μ΄ λͺ©λ‘(μ: Javaμ ArrayList λλ Pythonμ λͺ©λ‘)μ μ¬μ©νλ©΄ μ°κ²° 리μ€νΈμ λΉν΄ μΊμ μ§μμ±μ΄ ν₯μλμ΄ μ±λ₯μ΄ ν₯μλ μ μμ΅λλ€.
2. κ°λ°© μ£Όμλ²
κ°λ°© μ£Όμλ²μ λͺ¨λ μμκ° ν΄μ ν μ΄λΈ μ체 λ΄μ μ§μ μ μ₯λλ μΆ©λ ν΄κ²° κΈ°μ μ λλ€. μΆ©λμ΄ λ°μνλ©΄ μκ³ λ¦¬μ¦μ ν μ΄λΈμμ λΉ μ¬λ‘―μ νμ¬(κ²μ)ν©λλ€. κ·Έλ° λ€μ ν€-κ° μμ΄ ν΄λΉ λΉ μ¬λ‘―μ μ μ₯λ©λλ€.
μλ λ°©μ:
- ν΄μ±: ν€-κ° μμ μ½μ ν λ ν΄μ ν¨μλ μΈλ±μ€λ₯Ό κ³μ°ν©λλ€.
- μΆ©λ νμΈ: μΈλ±μ€κ° μ΄λ―Έ μ¬μ© μ€μΈ κ²½μ°(μΆ©λ) μκ³ λ¦¬μ¦μ λ체 μ¬λ‘―μ νμ¬ν©λλ€.
- νμ¬: λΉ μ¬λ‘―μ΄ λ°κ²¬λ λκΉμ§ νμ¬κ° κ³μλ©λλ€. κ·Έλ° λ€μ ν€-κ° μμ΄ ν΄λΉ μ¬λ‘―μ μ μ₯λ©λλ€.
- κ²μ: κ°μ κ²μνλ €λ©΄ ν΄μ ν¨μλ μΈλ±μ€λ₯Ό κ³μ°νκ³ ν€κ° λ°κ²¬λκ±°λ λΉ μ¬λ‘―μ΄ λ°μν λκΉμ§ ν μ΄λΈμ νμ¬ν©λλ€(ν€κ° μλ κ²½μ°).
μ¬λ¬ κ°μ§ νμ¬ κΈ°μ μ΄ μμΌλ©° κ° κΈ°μ μλ κ³ μ ν νΉμ§μ΄ μμ΅λλ€.
2.1 μ ν νμ¬
μ ν νμ¬λ κ°μ₯ κ°λ¨ν νμ¬ κΈ°μ μ λλ€. μ¬κΈ°μλ μλ ν΄μ μΈλ±μ€λΆν° μμνμ¬ λΉ μ¬λ‘―μ μμ°¨μ μΌλ‘ κ²μνλ κ²μ΄ ν¬ν¨λ©λλ€. μ¬λ‘―μ΄ μ¬μ© μ€μΈ κ²½μ° μκ³ λ¦¬μ¦μ λ€μ μ¬λ‘―μ νμ¬νκ³ νμν κ²½μ° ν μ΄λΈμ μμ λΆλΆμΌλ‘ λνν©λλ€.
νμ¬ μνμ€:
h(key), h(key) + 1, h(key) + 2, h(key) + 3, ... (ν
μ΄λΈ ν¬κΈ° λͺ¨λλ‘)
μ:
ν¬κΈ°κ° 10μΈ ν΄μ ν μ΄λΈμ μκ°ν΄ 보μΈμ. ν€ "μ¬κ³Ό"κ° μΈλ±μ€ 3μΌλ‘ ν΄μλμ§λ§ μΈλ±μ€ 3μ΄ μ΄λ―Έ μ¬μ© μ€μΈ κ²½μ° μ ν νμ¬λ μΈλ±μ€ 4, μΈλ±μ€ 5 λ±μ νμΈνμ¬ λΉ μ¬λ‘―μ΄ λ°κ²¬λ λκΉμ§ νμΈν©λλ€.
μ₯μ :
- κ°λ¨ν ꡬν: μ΄ν΄νκ³ κ΅¬ννκΈ° μ½μ΅λλ€.
- μ°μν μΊμ μ±λ₯: μμ°¨μ νμ¬λ‘ μΈν΄ μ ν νμ¬λ μΊμ μ±λ₯μ΄ μ°μν κ²½ν₯μ΄ μμ΅λλ€.
λ¨μ :
- 1μ°¨ ν΄λ¬μ€ν°λ§: μ ν νμ¬μ μ£Όμ λ¨μ μ 1μ°¨ ν΄λ¬μ€ν°λ§μ λλ€. μ΄λ μΆ©λμ΄ ν¨κ» ν΄λ¬μ€ν°λ§λλ κ²½ν₯μ΄ μμ΄ μ μ λ μ¬λ‘―μ΄ κΈΈκ² μ€νλλ κ²½μ°μ λ°μν©λλ€. μ΄ ν΄λ¬μ€ν°λ§μ νμ¬κ° μ΄λ¬ν κΈ΄ μ€νμ ν΅κ³Όν΄μΌ νλ―λ‘ κ²μ μκ°μ λ립λλ€.
- μ±λ₯ μ ν: ν΄λ¬μ€ν°κ° 컀μ§μ λ°λΌ ν΄λΉ ν΄λ¬μ€ν°μμ μλ‘μ΄ μΆ©λμ΄ λ°μν νλ₯ μ΄ λμμ Έ μ±λ₯μ΄ λμ± μ νλ©λλ€.
2.2 μ΄μ°¨ νμ¬
μ΄μ°¨ νμ¬λ μ΄μ°¨ ν¨μλ₯Ό μ¬μ©νμ¬ νμ¬ μνμ€λ₯Ό κ²°μ νμ¬ 1μ°¨ ν΄λ¬μ€ν°λ§ λ¬Έμ λ₯Ό μννλ €κ³ μλν©λλ€. μ΄λ κ² νλ©΄ ν μ΄λΈ μ 체μ μΆ©λμ΄ λ κ· λ±νκ² λΆμ°λ©λλ€.
νμ¬ μνμ€:
h(key), h(key) + 1^2, h(key) + 2^2, h(key) + 3^2, ... (ν
μ΄λΈ ν¬κΈ° λͺ¨λλ‘)
μ:
ν¬κΈ°κ° 10μΈ ν΄μ ν μ΄λΈμ μκ°ν΄ 보μΈμ. ν€ "μ¬κ³Ό"κ° μΈλ±μ€ 3μΌλ‘ ν΄μλμ§λ§ μΈλ±μ€ 3μ΄ μ¬μ© μ€μΈ κ²½μ° μ΄μ°¨ νμ¬λ μΈλ±μ€ 3 + 1^2 = 4, κ·Έλ° λ€μ μΈλ±μ€ 3 + 2^2 = 7, κ·Έλ° λ€μ μΈλ±μ€ 3 + 3^2 = 12(λͺ¨λλ‘ 10μ 2) λ±μ νμΈν©λλ€.
μ₯μ :
- 1μ°¨ ν΄λ¬μ€ν°λ§ κ°μ: 1μ°¨ ν΄λ¬μ€ν°λ§μ νΌνλ λ° μ ν νμ¬λ³΄λ€ λ μ’μ΅λλ€.
- λ κ· λ±ν λΆν¬: ν μ΄λΈ μ 체μ μΆ©λμ λ κ· λ±νκ² λΆμ°ν©λλ€.
λ¨μ :
- 2μ°¨ ν΄λ¬μ€ν°λ§: 2μ°¨ ν΄λ¬μ€ν°λ§μ΄ λ°μν©λλ€. λ ν€κ° λμΌν μΈλ±μ€λ‘ ν΄μλλ©΄ νμ¬ μνμ€κ° λμΌνμ¬ ν΄λ¬μ€ν°λ§μ΄ λ°μν©λλ€.
- ν μ΄λΈ ν¬κΈ° μ ν: νμ¬ μνμ€κ° ν μ΄λΈμ λͺ¨λ μ¬λ‘―μ λ°©λ¬Ένλλ‘ νλ €λ©΄ ν μ΄λΈ ν¬κΈ°κ° μμμ¬μΌ νλ©° μΌλΆ ꡬνμμλ λ‘λ ν©ν°κ° 0.5λ³΄λ€ μμμΌ ν©λλ€.
2.3 μ΄μ€ ν΄μ±
μ΄μ€ ν΄μ±μ λ λ²μ§Έ ν΄μ ν¨μλ₯Ό μ¬μ©νμ¬ νμ¬ μνμ€λ₯Ό κ²°μ νλ μΆ©λ ν΄κ²° κΈ°μ μ λλ€. μ΄λ 1μ°¨ λ° 2μ°¨ ν΄λ¬μ€ν°λ§μ λͺ¨λ λ°©μ§νλ λ° λμμ΄ λ©λλ€. λ λ²μ§Έ ν΄μ ν¨μλ 0μ΄ μλ κ°μ μμ±νκ³ ν μ΄λΈ ν¬κΈ°μ μλμ μΌλ‘ μμκ° λλλ‘ μ μ€νκ² μ νν΄μΌ ν©λλ€.
νμ¬ μνμ€:
h1(key), h1(key) + h2(key), h1(key) + 2*h2(key), h1(key) + 3*h2(key), ... (ν
μ΄λΈ ν¬κΈ° λͺ¨λλ‘)
μ:
ν¬κΈ°κ° 10μΈ ν΄μ ν
μ΄λΈμ μκ°ν΄ 보μΈμ. h1(key)κ° "μ¬κ³Ό"λ₯Ό 3μΌλ‘ ν΄μνκ³ h2(key)κ° "μ¬κ³Ό"λ₯Ό 4λ‘ ν΄μνλ€κ³ κ°μ ν©λλ€. μΈλ±μ€ 3μ΄ μ¬μ© μ€μΈ κ²½μ° μ΄μ€ ν΄μ±μ μΈλ±μ€ 3 + 4 = 7, κ·Έλ° λ€μ μΈλ±μ€ 3 + 2*4 = 11(λͺ¨λλ‘ 10μ 1), κ·Έλ° λ€μ μΈλ±μ€ 3 + 3*4 = 15(λͺ¨λλ‘ 10μ 5) λ±μ νμΈν©λλ€.
μ₯μ :
- ν΄λ¬μ€ν°λ§ κ°μ: 1μ°¨ λ° 2μ°¨ ν΄λ¬μ€ν°λ§μ λͺ¨λ ν¨κ³Όμ μΌλ‘ λ°©μ§ν©λλ€.
- μ°μν λΆν¬: ν μ΄λΈ μ 체μ ν€λ₯Ό λ³΄λ€ κ· μΌνκ² λΆν¬ν©λλ€.
λ¨μ :
- λ 볡μ‘ν ꡬν: λ λ²μ§Έ ν΄μ ν¨μλ₯Ό μ μ€νκ² μ νν΄μΌ ν©λλ€.
- 무ν 루ν κ°λ₯μ±: λ λ²μ§Έ ν΄μ ν¨μλ₯Ό μ μ€νκ² μ ννμ§ μμ κ²½μ°(μ: 0μ λ°νν μ μλ κ²½μ°) νμ¬ μνμ€κ° ν μ΄λΈμ λͺ¨λ μ¬λ‘―μ λ°©λ¬Ένμ§ μμ 무ν 루νκ° λ°μν μ μμ΅λλ€.
κ°λ°© μ£Όμλ² κΈ°μ λΉκ΅
λ€μμ κ°λ°© μ£Όμλ² κΈ°μ κ°μ μ£Όμ μ°¨μ΄μ μ μμ½ν νμ λλ€.
| κΈ°μ | νμ¬ μνμ€ | μ₯μ | λ¨μ |
|---|---|---|---|
| μ ν νμ¬ | h(key) + i (ν
μ΄λΈ ν¬κΈ° λͺ¨λλ‘) |
κ°λ¨ν¨, μ°μν μΊμ μ±λ₯ | 1μ°¨ ν΄λ¬μ€ν°λ§ |
| μ΄μ°¨ νμ¬ | h(key) + i^2 (ν
μ΄λΈ ν¬κΈ° λͺ¨λλ‘) |
1μ°¨ ν΄λ¬μ€ν°λ§ κ°μ | 2μ°¨ ν΄λ¬μ€ν°λ§, ν μ΄λΈ ν¬κΈ° μ ν |
| μ΄μ€ ν΄μ± | h1(key) + i*h2(key) (ν
μ΄λΈ ν¬κΈ° λͺ¨λλ‘) |
1μ°¨ λ° 2μ°¨ ν΄λ¬μ€ν°λ§ λͺ¨λ κ°μ | λ 볡μ‘ν¨, h2(key)λ₯Ό μ μ€νκ² μ νν΄μΌ ν¨ |
μ¬λ°λ₯Έ μΆ©λ ν΄κ²° μ λ΅ μ ν
μ΅κ³ μ μΆ©λ ν΄κ²° μ λ΅μ νΉμ μ ν리μΌμ΄μ κ³Ό μ μ₯λλ λ°μ΄ν°μ νΉμ±μ λ°λΌ λ€λ¦ λλ€. λ€μμ μ νμ λμμ΄ λλ κ°μ΄λμ λλ€.
- λΆλ¦¬ μ°κ²°λ²:
- λ©λͺ¨λ¦¬ μ€λ²ν€λκ° μ£Όμ λ¬Έμ κ° μλ λ μ¬μ©ν©λλ€.
- λ‘λ ν©ν°κ° λμ μ μλ μ ν리μΌμ΄μ μ μ ν©ν©λλ€.
- ν₯μλ μ±λ₯μ μν΄ κ· ν νΈλ¦¬ λλ λμ λ°°μ΄ λͺ©λ‘μ μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
- κ°λ°© μ£Όμλ²:
- λ©λͺ¨λ¦¬ μ¬μ©λμ΄ μ€μνκ³ μ°κ²° 리μ€νΈ λλ κΈ°ν λ°μ΄ν° ꡬ쑰μ μ€λ²ν€λλ₯Ό νΌνλ €λ κ²½μ° μ¬μ©ν©λλ€.
- μ ν νμ¬: μμ ν μ΄λΈμ μ ν©νκ±°λ μΊμ μ±λ₯μ΄ κ°μ₯ μ€μν κ²½μ°, 1μ°¨ ν΄λ¬μ€ν°λ§μ μ μνμμμ€.
- μ΄μ°¨ νμ¬: λ¨μμ±κ³Ό μ±λ₯ μ¬μ΄μ μ’μ μ μΆ©μμ΄μ§λ§ 2μ°¨ ν΄λ¬μ€ν°λ§ λ° ν μ΄λΈ ν¬κΈ° μ νμ μ μνμμμ€.
- μ΄μ€ ν΄μ±: κ°μ₯ 볡μ‘ν μ΅μ μ΄μ§λ§ ν΄λ¬μ€ν°λ§μ νΌνλ λ° μμ΄ μ΅κ³ μ μ±λ₯μ μ 곡ν©λλ€. λ λ²μ§Έ ν΄μ ν¨μλ₯Ό μ μ€νκ² μ€κ³ν΄μΌ ν©λλ€.
ν΄μ ν μ΄λΈ μ€κ³λ₯Ό μν μ£Όμ κ³ λ € μ¬ν
μΆ©λ ν΄κ²° μΈμλ μ¬λ¬ λ€λ₯Έ μμκ° ν΄μ ν μ΄λΈμ μ±λ₯κ³Ό ν¨μ¨μ±μ μν₯μ λ―ΈμΉ©λλ€.
- ν΄μ ν¨μ:
- μ°μν ν΄μ ν¨μλ ν€λ₯Ό ν μ΄λΈ μ 체μ κ· λ±νκ² λΆμ°μν€κ³ μΆ©λμ μ΅μννλ λ° λ§€μ° μ€μν©λλ€.
- ν΄μ ν¨μλ κ³μ°νκΈ°μ ν¨μ¨μ μ΄μ΄μΌ ν©λλ€.
- MurmurHash λλ CityHashμ κ°μ μ ν립λ ν΄μ ν¨μλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
- λ¬Έμμ΄ ν€μ κ²½μ° λ€νμ ν΄μ ν¨μκ° μΌλ°μ μΌλ‘ μ¬μ©λ©λλ€.
- ν
μ΄λΈ ν¬κΈ°:
- ν μ΄λΈ ν¬κΈ°λ λ©λͺ¨λ¦¬ μ¬μ©λκ³Ό μ±λ₯μ κ· νμ λ§μΆκΈ° μν΄ μ μ€νκ² μ νν΄μΌ ν©λλ€.
- μΌλ°μ μΈ λ°©λ²μ ν μ΄λΈ ν¬κΈ°μ μμλ₯Ό μ¬μ©νμ¬ μΆ©λ κ°λ₯μ±μ μ€μ΄λ κ²μ λλ€. μ΄λ νΉν μ΄μ°¨ νμ¬μ μ€μν©λλ€.
- ν μ΄λΈ ν¬κΈ°λ κ³Όλν μΆ©λμ μΌμΌν€μ§ μκ³ μμλλ μμ μλ₯Ό μμ©ν μ μμ λ§νΌ μΆ©λΆν μ»€μΌ ν©λλ€.
- λ‘λ ν©ν°:
- λ‘λ ν©ν°λ ν μ΄λΈμ μμ μλ₯Ό ν μ΄λΈ ν¬κΈ°λ‘ λλ λΉμ¨μ λλ€.
- λμ λ‘λ ν©ν°λ ν μ΄λΈμ΄ κ°λ μ°¨κ³ μμ΄ μΆ©λ λ° μ±λ₯ μ νκ° μ¦κ°ν μ μμμ λνλ λλ€.
- λ§μ ν΄μ ν μ΄λΈ ꡬνμμλ λ‘λ ν©ν°κ° νΉμ μκ³κ°μ μ΄κ³Όνλ©΄ ν μ΄λΈ ν¬κΈ°λ₯Ό λμ μΌλ‘ μ‘°μ ν©λλ€.
- ν¬κΈ° μ‘°μ :
- λ‘λ ν©ν°κ° μκ³κ°μ μ΄κ³Όνλ©΄ μ±λ₯μ μ μ§νκΈ° μν΄ ν΄μ ν μ΄λΈ ν¬κΈ°λ₯Ό μ‘°μ ν΄μΌ ν©λλ€.
- ν¬κΈ° μ‘°μ μλ μλ‘κ³ λ ν° ν μ΄λΈμ λ§λ€κ³ κΈ°μ‘΄μ λͺ¨λ μμλ₯Ό μ ν μ΄λΈλ‘ λ€μ ν΄μ±νλ μμ μ΄ ν¬ν¨λ©λλ€.
- ν¬κΈ° μ‘°μ μ λΉμ©μ΄ λ§μ΄ λλ μμ μ΄λ―λ‘ λλ¬Όκ² μνν΄μΌ ν©λλ€.
- μΌλ°μ μΈ ν¬κΈ° μ‘°μ μ λ΅μλ ν μ΄λΈ ν¬κΈ°λ₯Ό λ λ°°λ‘ λ리거λ κ³ μ λ λΉμ¨λ‘ λ리λ κ²μ΄ ν¬ν¨λ©λλ€.
μ€μ μ λ° κ³ λ € μ¬ν
λ€μν μΆ©λ ν΄κ²° μ λ΅μ΄ μ νΈλ μ μλ λͺ κ°μ§ μ€μ μμ μλ리μ€λ₯Ό κ³ λ €ν΄ λ³΄κ² μ΅λλ€.
- λ°μ΄ν°λ² μ΄μ€: λ§μ λ°μ΄ν°λ² μ΄μ€ μμ€ν μ μΈλ±μ± λ° μΊμ±μ ν΄μ ν μ΄λΈμ μ¬μ©ν©λλ€. λκ·λͺ¨ λ°μ΄ν° μΈνΈλ₯Ό μ²λ¦¬νκ³ ν΄λ¬μ€ν°λ§μ μ΅μννλ μ±λ₯μ μν΄ κ· ν νΈλ¦¬κ° μλ μ΄μ€ ν΄μ± λλ λΆλ¦¬ μ°κ²°λ²μ΄ μ νΈλ μ μμ΅λλ€.
- μ»΄νμΌλ¬: μ»΄νμΌλ¬λ ν΄μ ν μ΄λΈμ μ¬μ©νμ¬ λ³μ μ΄λ¦μ ν΄λΉ λ©λͺ¨λ¦¬ μμΉμ λ§€ννλ μ¬λ³Ό ν μ΄λΈμ μ μ₯ν©λλ€. λΆλ¦¬ μ°κ²°λ²μ λ¨μμ±κ³Ό κ°λ³μ μΈ μμ κΈ°νΈλ₯Ό μ²λ¦¬ν μ μκΈ° λλ¬Έμ μμ£Ό μ¬μ©λ©λλ€.
- μΊμ±: μΊμ± μμ€ν μ μμ£Ό μ‘μΈμ€νλ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν΄ ν΄μ ν μ΄λΈμ μμ£Ό μ¬μ©ν©λλ€. μ ν νμ¬λ μΊμ μ±λ₯μ΄ μ€μν μμ μΊμμ μ ν©ν μ μμ΅λλ€.
- λ€νΈμν¬ λΌμ°ν : λ€νΈμν¬ λΌμ°ν°λ ν΄μ ν μ΄λΈμ μ¬μ©νμ¬ λμ μ£Όμλ₯Ό λ€μ νμ λ§€ννλ λΌμ°ν ν μ΄λΈμ μ μ₯ν©λλ€. ν΄λ¬μ€ν°λ§μ νΌνκ³ ν¨μ¨μ μΈ λΌμ°ν μ 보μ₯νλ κΈ°λ₯ λλ¬Έμ μ΄μ€ ν΄μ±μ΄ μ νΈλ μ μμ΅λλ€.
κΈλ‘λ² κ΄μ λ° λͺ¨λ² μ¬λ‘
κΈλ‘λ² μ»¨ν μ€νΈμμ ν΄μ ν μ΄λΈμ μ¬μ©ν λλ λ€μ μ¬νμ κ³ λ €νλ κ²μ΄ μ€μν©λλ€.
- λ¬Έμ μΈμ½λ©: λ¬Έμμ΄μ ν΄μ±ν λλ λ¬Έμ μΈμ½λ© λ¬Έμ λ₯Ό μκ³ μμ΄μΌ ν©λλ€. μλ‘ λ€λ₯Έ λ¬Έμ μΈμ½λ©(μ: UTF-8, UTF-16)μ λμΌν λ¬Έμμ΄μ λν΄ μλ‘ λ€λ₯Έ ν΄μ κ°μ μμ±ν μ μμ΅λλ€. ν΄μ±νκΈ° μ μ λͺ¨λ λ¬Έμμ΄μ΄ μΌκ΄λκ² μΈμ½λ©λμλμ§ νμΈνμμμ€.
- νμ§ν: μ ν리μΌμ΄μ μ΄ μ¬λ¬ μΈμ΄λ₯Ό μ§μν΄μΌ νλ κ²½μ° νΉμ μΈμ΄ λ° λ¬Ένμ κ·μΉμ κ³ λ €νλ λ‘μΌμΌ μΈμ ν΄μ ν¨μλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€.
- 보μ: ν΄μ ν μ΄λΈμ΄ μ€μν λ°μ΄ν°λ₯Ό μ μ₯νλ λ° μ¬μ©λλ κ²½μ° μΆ©λ 곡격μ λ°©μ§νκΈ° μν΄ μνΈν ν΄μ ν¨μλ₯Ό μ¬μ©νλ κ²μ΄ μ’μ΅λλ€. μΆ©λ 곡격μ μ μ± λ°μ΄ν°λ₯Ό ν΄μ ν μ΄λΈμ μ½μ νμ¬ μμ€ν μ μμμν¬ μ μμ΅λλ€.
- κ΅μ ν(i18n): ν΄μ ν μ΄λΈ ꡬνμ i18nμ μΌλμ λκ³ μ€κ³ν΄μΌ ν©λλ€. μ¬κΈ°μλ λ€μν λ¬Έμ μΈνΈ, μ½λ μ΄μ λ° μ«μ νμμ΄ μ§μλ©λλ€.
κ²°λ‘
ν΄μ ν μ΄λΈμ κ°λ ₯νκ³ λ€μ¬λ€λ₯ν λ°μ΄ν° ꡬ쑰μ΄μ§λ§ μ±λ₯μ μ νν μΆ©λ ν΄κ²° μ λ΅μ ν¬κ² μ’μ°λ©λλ€. λ€μν μ λ΅κ³Ό κ·Έ μ μΆ©μ μ μ΄ν΄ν¨μΌλ‘μ¨ μ ν리μΌμ΄μ μ νΉμ μꡬ μ¬νμ μΆ©μ‘±νλ ν΄μ ν μ΄λΈμ μ€κ³νκ³ κ΅¬νν μ μμ΅λλ€. λ°μ΄ν°λ² μ΄μ€, μ»΄νμΌλ¬ λλ μΊμ± μμ€ν μ ꡬμΆνλ μ μ€κ³λ ν΄μ ν μ΄λΈμ μ±λ₯κ³Ό ν¨μ¨μ±μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
μΆ©λ ν΄κ²° μ λ΅μ μ νν λλ λ°μ΄ν°μ νΉμ±, μμ€ν μ λ©λͺ¨λ¦¬ μ μ½ μ‘°κ±΄ λ° μ ν리μΌμ΄μ μ μ±λ₯ μꡬ μ¬νμ μ μ€νκ² κ³ λ €νμμμ€. μ μ€ν κ³ν λ° κ΅¬νμ ν΅ν΄ ν΄μ ν μ΄λΈμ κΈ°λ₯μ νμ©νμ¬ ν¨μ¨μ μ΄κ³ νμ₯ κ°λ₯ν μ ν리μΌμ΄μ μ ꡬμΆν μ μμ΅λλ€.